package fr.epsi.game.net;

import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.SwingUtilities;

import fr.epsi.game.data.Coordonnee;
import fr.epsi.game.data.Status;
import fr.epsi.game.impl.GameControllerImpl;
import fr.epsi.game.listener.ButtonStateListener;
import fr.epsi.game.data.ButtonState;
import fr.epsi.game.errors.RuleException;

public class NetworkFake {
	private final static Logger LOGGER = Logger.getLogger("NetworkFake");

	public static void newGame(final GameControllerImpl joueur1,
			final GameControllerImpl joueur2) {
		joueur1.getModel().addOtherButtonStateListener(
				new ButtonStateListener() {

					@Override
					public void buttonStateChange(final Coordonnee coord,
							ButtonState state) {
						SwingUtilities.invokeLater(new Runnable() {
							public void run() {
								try {
									joueur2.ilJoue(coord);
								} catch (RuleException ex) {
									LOGGER.log(Level.SEVERE,
											"Violation des regles", ex);
								}
							}
						});
					}
				});
		joueur2.getModel().addOtherButtonStateListener(
				new ButtonStateListener() {

					@Override
					public void buttonStateChange(final Coordonnee coord,
							ButtonState state) {
						SwingUtilities.invokeLater(new Runnable() {
							public void run() {
								try {
									joueur1.ilJoue(coord);
								} catch (RuleException ex) {
									LOGGER.log(Level.SEVERE,
											"Violation des regles", ex);
								}
							}
						});
					}
				});
		joueur2.getModel().setStatus(Status.SON_TOUR);
		joueur1.getModel().setStatus(Status.MON_TOUR);
	}

}